package com.google.android.apps.skipbot;

public interface RobotConfig {
  /**
   * Gets the pin number for the requested servo.
   * 
   * @param servoIndex zero based logical servo index
   * @return pin number of the requested servo
   */
  public int getPin(int servoIndex);

  /**
   * Gets the logical down position angle in degrees of the servo.
   * 
   * @param servoIndex zero based logical servo index
   * @return logical down position angle in degrees of the servo
   */
  public int getDownAngle(int servoIndex);

  /**
   * Gets the logical up position angle in degrees of the servo.
   * 
   * @param servoIndex zero based logical servo index
   * @return logical up position angle in degrees of the servo
   */
  public int getUpAngle(int servoIndex);

  /**
   * Gets the number of servos in the robot.
   * 
   * @return the number of servos
   */
  public int getNumServos();

  /**
   * Gets the shift between the desired angle and the actual angle that should
   * be sent to the robot. Desired Angle + Calibration Shift = Send Angle.
   * 
   * @param servoIndex zero based logical servo index
   * @return angle shift to go from desired angle to send angle
   */
  public int getCalibrationShift(int servoIndex);

  /**
   * Gets if the direction of the servo is flipped. If this is true then sending
   * 180 to a servo object will result in sending 0 to the actual hardware.
   * 
   * @param servoIndex zero based logical servo index
   */
  public boolean getDirectionFlipped(int servoIndex);
}
